﻿#include<iostream>
using namespace std;

class year
{
public:
	int operator-(const year& d2)
	{
		return _year - d2._year;
	}

	year(int year = 2024)
	{
		_year = year;
	}

private:
	int _year;

};



class Date
{
public:
	Date(int year = 1, int month = 1, int day = 1)
	{
		_year = year;
		_month = month;
		_day = day;
	}
	Date(const Date& d)
	{
		cout << " Date(const Date& d)" << endl;
		_year = d._year;
		_month = d._month;
		_day = d._day;
	}
	// 传引⽤返回减少拷⻉
	// d1 = d2;
	Date& operator=(const Date& d)
	{
		// 不要检查⾃⼰给⾃⼰赋值的情况
		if (this != &d)
		{
			_year = d._year;
			_month = d._month;
			_day = d._day;
		}
		// d1 = d2表达式的返回对象应该为d1，也就是*this
		return *this;
	}
	void Print()
	{
		cout << _year << "-" << _month << "-" << _day << endl;
	}
private:
	int _year;
	int _month;
	int _day;
};


int main()
{
	/*year d1(2034);
	year d2(2024);
	cout<<d1 - d2<<endl;*/

	Date d1(2024, 8, 30);
	Date d2(d1);

	Date d3(2024, 8, 31);
	Date d4 = d3;

	d4 = d1=d2;


	return 0;
}